package br.com.redejava.ciep.negocio;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import br.com.redejava.ciep.util.Pair;

public abstract class Unidade {
	private String nome;
	private Map<String, Produto> estoque;
	private List<Pair<String, Integer>> histSolicitacoesUnidade;

	public Unidade() {
		this.estoque = new HashMap<String, Produto>();
		this.histSolicitacoesUnidade = new ArrayList<Pair<String, Integer>>();
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public void addProduto(Produto produto) {
		this.estoque.put(produto.getNome(), produto);
	}

	public Produto getProduto(String produtoNome) {
		return this.estoque.get(produtoNome);
	}

	@SuppressWarnings({"unchecked", "rawtypes"})
	public void addHistSolicUnidade(String produtoNome, Integer quantidade) {
		this.histSolicitacoesUnidade.add(new Pair(produtoNome, quantidade));
	}

	public List<Pair<String, Integer>> getHistSolicitacoesUnidade() {
		return histSolicitacoesUnidade;
	}

	public void informarQuantidadeProduto(String produtoNome) {
		System.out.printf("[%d x %s] ", this.getProduto(produtoNome).getQuantidade(), produtoNome);
	}

	public void informarQuantidadeProdutos() {
		System.out.printf("%s ", this.getNome());
		for (Object key : this.estoque.keySet()) {
			this.informarQuantidadeProduto(key.toString());
		};
		System.out.println();
	}
}
